package com.base.app_core.util.glide;

import android.app.Activity;
import android.content.Context;
import android.net.Uri;
import android.text.TextUtils;
import android.widget.ImageView;

import com.base.app_core.R;
import com.base.app_core.util.XYBAUtils;
import com.bumptech.glide.Glide;
import com.bumptech.glide.load.engine.DiskCacheStrategy;

import java.io.File;

/**
 * Created by Administrator on 2016/3/15.
 */
public final class GlideUtill {

    public static int ERROR_IMG = R.mipmap.use_default;

    private GlideUtill() {
    }

    /**
     * 显示UrI
     */
    public static void displayInterntImg(Context context, String url, ImageView mView) {
        if (XYBAUtils.checkContextNull(context))
            return;


        displayInterntImg(context, url, mView, ERROR_IMG, ERROR_IMG);
    }

    /**
     * 显示UrI
     *
     * @param context
     * @param url
     * @param mView
     * @param loading
     * @param error
     */
    public static void displayInterntImg(Context context, String url, ImageView mView, int loading, int error) {
        if (XYBAUtils.checkContextNull(context))
            return;


        if (!(context instanceof Activity)) {
            return;
        }

        if (((Activity) context).isFinishing()) {
            return;
        }

        if (TextUtils.isEmpty(url) || "null".equals(url)) {
            return;
        }

        Glide.with(context).load(url).placeholder(loading) // 加载中
                .error(error).// 加载错误
                diskCacheStrategy(DiskCacheStrategy.SOURCE)
                .thumbnail(0.1f)
                .crossFade().into(mView);
    }

    /**
     * 显示UrI
     */
    public static void displayLocalImg(Context context, String url, ImageView mView) {
        if (TextUtils.isEmpty(url)) {
            return;
        }

        if (!new File(url).exists()) {
            return;
        }

        String fileUrl = "file://" + url;

        Glide.with(context).load(fileUrl).placeholder(ERROR_IMG) // 加载中
                .error(ERROR_IMG).dontAnimate() // 加载错误
                .crossFade().into(mView);
    }

    public static void displayLocalNoCachImg(Context context, String url, ImageView mView) {
        if (XYBAUtils.checkContextNull(context))
            return;


        if (TextUtils.isEmpty(url)) {
            return;
        }

        if (!new File(url).exists()) {
            return;
        }

        String fileUrl = "file://" + url;

        Glide.with(context).load(fileUrl).placeholder(ERROR_IMG).dontAnimate() // 加载中
                .error(ERROR_IMG).diskCacheStrategy(DiskCacheStrategy.NONE) // 加载错误
                .crossFade().into(mView);
    }

    /**
     * 显示UrI
     */
    public static void displayDrawableImg(Context context, int url, ImageView mView) {
        if (XYBAUtils.checkContextNull(context))
            return;


        Glide.with(context).load(url).placeholder(ERROR_IMG) // 加载中
                .error(ERROR_IMG).dontAnimate() // 加载错误
                .crossFade().into(mView);
    }

    /**
     * 显示UrI
     */
    public static void displayThumbImg(Context context, Uri resource, int size, ImageView mView) {
        if (XYBAUtils.checkContextNull(context))
            return;


        Glide.with(context).load(resource).placeholder(ERROR_IMG).dontAnimate() // 加载中
                .error(ERROR_IMG) // 加载错误
                .thumbnail(size).crossFade().into(mView);
    }

    /**
     * 显示圆角图
     */
    public static void displayUrlImgWithRound(Context context, String url, ImageView mView, int dp) {
        if (XYBAUtils.checkContextNull(context))
            return;


        // 小于0，默认原图
        if (dp <= 0) {
            displayInterntImg(context, url, mView);
            return;
        }

        if (XYBAUtils.checkContextNull(context))
            return;


        if (isUrlEmpty(url)) {
            return;
        }

        Glide.with(context).load(url).dontAnimate().placeholder(ERROR_IMG).error(ERROR_IMG)
                .transform(new GlideRoundTransform(context, dp)).crossFade().into(mView);
    }

    /**
     * Circle img
     */
    public static void displayUrlCircleImg(Context context, String url, ImageView mView) {
        if (XYBAUtils.checkContextNull(context))
            return;


        displayUrlCircleImg(context, url, mView, ERROR_IMG, ERROR_IMG);
    }

    public static void displayUrlCircleImg(Context context, String url, ImageView mView, int loading, int error) {
        if (XYBAUtils.checkContextNull(context))
            return;

//        displayUrlImgWithRound(context, url, mView, PixelUtil.dp2px(context, 128));
        if (isUrlEmpty(url)) {
            return;
        }

        if (XYBAUtils.checkContextNull(context))
            return;

        Glide.with(context).load(url).dontAnimate().placeholder(loading).error(error)
                .transform(new GlideCircleTransform(context)).crossFade().into(mView);
    }

    /**
     * URL 为空
     *
     * @param url
     * @return
     */
    private static boolean isUrlEmpty(String url) {
        return TextUtils.isEmpty(url) || "null".equals(url) || "undefine".equals(url);
    }

}
